블로그 릴레이 - AWS Cost Anomaly Detection 과 Chatbot 을 사용하여 이상 비용을 검출 및 Slack에 통지 받기

블로그 릴레이 - AWS Cost Anomaly Detection 과 Chatbot 을 사용하여 이상 비용을 검출 및 Slack에 통지 받기

안녕하세요! AWS 사업 본부의 서은우입니다. 본 블로그는 당사의 한국어 블로그 릴레이의 여섯 번째 블로그입니다. 이번 블로그의 주제는「AWS Cost Anomaly Detection 과 Chatbot 을 사용하여 이상 비용을 검출 및 통지 받기」입니다.
Clock Icon2024.07.27

안녕하세요! AWS 사업 본부의 서은우입니다.

본 블로그는 당사의 한국어 블로그 릴레이의 여섯 번째 블로그입니다.
이번 블로그의 주제는「AWS Cost Anomaly Detection 과 Chatbot 을 사용하여 이상 비용을 검출 및 통지 받기」입니다.

AWS Cost Anomaly Detection 에 대해서

AWS Cost Anomaly Detection은 AWS 계정에서 발생한 비정상적인 비용을 검출하고 확인할 수 있는 무료 서비스입니다.

"비정상적인 비용" 이란 갑자기 많은 비용이 발생하거나 사용하지 않는 서비스에 대해 비용이 발생하는 경우를 생각할 수 있는데요,
AWS에서는 머신 러닝을 통해 사용자의 지출 패턴을 분석하고 자동으로 이를 탐지한다고 합니다.

또한 AWS Cost Anomaly Detection가 탐지한 내용을 통해
어떤 서비스에서 평소보다 얼마나 많은 비용이 발생하였는지, 그 원인이 무엇인지 분석할 수 있기 때문에
비정상적인 비용 발생이 걱정되는 분들이시라면 사용하시는 것을 추천드립니다.

AWS Cost Anomaly Detection 의 검출 내용을 Slack 으로 통지받기

개요

오늘 블로그를 통해 소개해드릴 내용은 AWS Cost Anomaly Detection로 검출 받은 내용을 Slack 으로 통지 받는 방법입니다.

AWS Cost Anomaly Detection 는 SNS 와 연계하여 메일로 받아볼 수 있는데요,
여기에 AWS Chatbot 서비스를 추가하여 비정상적인 비용이 검출될 때 마다 그 내용을 Slack 으로 통지받고자 합니다.

아키텍쳐

본 기능의 아키텍쳐는 다음과 같습니다.

스크린샷 2024-07-27 오전 12.02.53

각 서비스들의 기능은 다음과 같습니다.

  • AWS Cost Anomaly Detection: 발생하는 이상비용을 검출합니다
  • Amazon SNS: 검출한 내용을 Chatbot 에게 전달합니다.
  • AWS Chatbot: SNS 로부터 수신 받은 내용을 Slack 으로 전송합니다.
  • IAM Role: Chatbot 이 Slack 에 메세지를 보낼 수 있기 위한 권한을 가지고 있습니다.

구현하기

기능을 구현하기 위해서는 대상 AWS 서비스에 대해 다음과 같은 리소스 생성 및 설정이 필요합니다.

  • Amazon SNS: Cost Anomaly Detection 으로부터의 통지를 받을 토픽 생성
  • Cost Anomaly Detection: 서비스를 활성화
  • AWS Chatbot: Slack 채널과 연결할 Chatbot 클라이언트 생성
  • IAM: Chatbot 이 메세지를 게시할 수 있는 권한의 Role 생성

Amazon SNS 설정

먼저 AWS Cost Anomaly Detection 로 부터의 검출 내용을 Chatbot 으로 전달하는 SNS 토픽을 생성하도록 하겠습니다.

본 단계에서 생성하는 SNS 토픽은 이후 단계에서 생성할 Chatbot 을 구독할 것이므로 메일을 설정하는 등의 구독설정을 할 필요는 없습니다.

SNS 토픽 만들기

sns1

SNS 콘솔화면으로 접속하여 SNS 토픽을 생성하여 줍니다.

sns2

AWS Cost Anomaly Detection 가 생성한 토픽에 주제를 게시할 수 있도록 하기 위해 토픽의 액세스 정책에 아래의 정책을 추가합니다.

{
  "Sid": "액세스 정책 id",
  "Effect": "Allow",
  "Principal": {
    "Service": "costalerts.amazonaws.com"
  },
  "Action": "SNS:Publish",
  "Resource": "생성한 토픽의 ARN"
}

현 단계에서는 구독에 대한 설정을 따로 하지 않아도 괜찮으며 이것으로 SNS 토픽 생성을 완료하고 AWS Cost Anomaly Detection 을 활성화하는 단계로 넘어갑니다.

AWS Cost Anomaly Detection 설정

AWS Cost Anomaly Detection 은 기본적으로 비활성화 상태이기 때문에 사용을 위해 "모니터"를 생성하여 활성화 상태로의 설정 변경이 필요합니다.

모니터 생성하기

1

Billing and Cost Management 콘솔화면의 네비게이션에서 Cost Anomaly Detection 페이지를 찾아 이동합니다.

2

"Cost monitors" 탭에서 Create monitor 버튼을 눌러 모니터 생성 화면으로 이동합니다.

3

사용중인 전체 AWS 서비스에 대한 비용을 모니터링하기 위해서 모니터 타입으로 "AWS Services" 를 선택하고 적절한 모니터의 이름을 입력하고 다음으로 이동합니다.

sns3

다음으로는 모니터에 대한 구독을 설정합니다.

각 모니터에는 검출 내용을 통지 받기 위한 리소스인 "구독" 을 설정할 수 있습니다.
구독에는 매일, 일주일에 한 번과 같은 통지 빈도를 설정할 수 있고, 이상 비용의 임계값을 설정하여 통지를 발생시키는 조건을 정의할 수도 있습니다.

  • Alerting frequency(통지 빈도): Individual alerts, 개별 서비스에 대해 이상 비용이 검출 되었을 경우 통지 생성
  • Threshold(임계값):
    • percent above expected spend: 발생한 비정상적 비용이 예상 지출과 비교하여 특정 % 이상일 경우 통지 생성
    • amount above expected spend: 발생한 비정상적 비용이 예상 지출과 비교하여 특정 값 이상일 경우 통지 생성

사진의 설정 내용의 경우, 개별 서비스에서 비정상적 비용이 검출되었을 때,
검출된 비정상적 비용의 값이 AWS Cost Anomaly Detection가 예측한 정상 비용의 10 % 이상이고(AND 조건) 10 달러 이상일 경우 SNS 로의 통지가 발생됨을 의미합니다.

통지 빈도와 조건에 대해서 설정한 뒤, 통지 수신처로 앞선 단계에서 생성한 SNS 토픽의 ARN 을 입력하고 AWS Cost Anomaly Detection의 모니터링과 구독에 대한 설정을 완료합니다.

AWS Chatbot 설정

다음으로는 AWS Chatbot 을 설정합니다.

이 단계에서는 Slack 과 연동할 Chatbot 클라이언트, 그리고 Chatbot 이 Slack 에 메세지를 보내기 위해 적절한 권한이 부여되어 있는 IAM Role 을 생성합니다.

Chatbot 생성

chatbot1

AWS Chatbot 콘솔 화면으로 이동하여 Chatbot 으로 부터 메세지를 수신하기 위한 대상의 Slack 워크스페이스와 Chatbot 을 연동하기 위한 Chatbot 클라이언트를 생성합니다.

chat2

연동된 Slack 워크스페이스 페이지에 Chatbot 으로부터 메세지를 수신하고자 하는 대상 Slack 채널에 대한 정의를 생성합니다.

chat3

생성할 정의의 이름과 슬랙 채널의 ID를 입력합니다.

chat4

Permissions(권한) 설정 부분에서는, Channel role을 선택합니다.

Channel role 에서는 "Create an IAM role using a template" 를 선택하여 Chatbot 이 사용할 IAM role 을 새로 만들도록 하겠습니다.

생성할 Role의 이름을 설정하고 나머지 설정은 기본값으로 설정합니다.

chat5-2

앞서 생성한 SNS 토픽을 설정하기 위해 해당 토픽의 리전과 토픽명을 선택한 후 설정을 마칩니다.

Slack 설정

AWS Bot 초대

통지 메세지를 게시하기 위한 대상 Slack 채널에 아래의 명령어를 입력하여 aws 챗봇을 초대합니다.

/invite @aws

이것으로 AWS Cost Anomaly Detection 가 검출한 비정상적인 비용을 Slack 채널에 통지받기 위한 설정을 완료하였습니다.

결과 확인

실제로 AWS Cost Anomaly Detection 가 비정상적인 비용을 검출하고 통지가 발생할 경우 Slack에는 다음과 같은 메세지가 도착하게 됩니다.

result1

메세지에는 대상 계정, 비정상적인 비용이 최초 발생한 날짜, 발생 기간, 발생한 비용, 비정상적인 비용이 발생한 서비스와 비용 항목과 같은 원인에 대한 정보가 있습니다.

끝으로

이상 한국어 블로그 릴레이의 여섯 번째 블로그였습니다.
다음 일곱 번째 블로그는 8월 둘째 주에 공개됩니다.

참고

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.